package org.javabuilders.swing.test; import static org.junit.Assert.*; import java.awt.Component; import java.util.EventObject; import javax.swing.DefaultCellEditor; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.event.CellEditorListener; import javax.swing.event.TableModelListener; import javax.swing.table.TableCellEditor; import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumn; import javax.swing.table.TableModel; import org.javabuilders.BuildResult; import org.javabuilders.swing.util.SwingYamlBuilder; import org.junit.Before; import org.junit.Test; /** * JTable tests */ public class JTableTest { private TestModel model = null; private TestModel modelInstantiated = new TestModel(); private TableTestCellEditor cellEditor = null; private TableTestCellRenderer cellRenderer = null; @Before public void setUp() { model = null; modelInstantiated = new TestModel(); cellEditor = null; cellRenderer = null; } @Test public void testTableModel() { BuildResult r = new SwingYamlBuilder("JScrollPane(name=pane):") {{ ___("JTable(name=table):"); _____("- TestModel(name=model)"); }}.build(this); JTable table = (JTable) r.get("table"); assertNotNull(table); TestModel buildModel = (TestModel) r.get("model"); assertNotNull(buildModel); assertEquals(buildModel, table.getModel()); assertEquals(buildModel, model); TableModel tm = table.getModel(); assertTrue(tm instanceof TestModel); assertEquals(model, tm); } @Test public void testTableModelInstantiated_Issue57() { BuildResult r = new SwingYamlBuilder("JScrollPane(name=pane):") {{ ___("JTable(name=table):"); _____("- TestModel(name=modelInstantiated)"); }}.build(this); JTable table = (JTable) r.get("table"); assertNotNull(table); TestModel buildModel = (TestModel) r.get("modelInstantiated"); assertNotNull(buildModel); assertEquals(buildModel, table.getModel()); assertEquals(buildModel, modelInstantiated); TableModel tm = table.getModel(); assertTrue(tm instanceof TestModel); assertEquals(modelInstantiated, tm); } @Test public void testJComboBoxCellEditor() { BuildResult r = new SwingYamlBuilder("JTable(name=table):") {{ ___("- TableColumn(name=comboColumn):"); _____("- JComboBox(name=combobox)"); }}.build(this); JComboBox combobox = (JComboBox) r.get("combobox"); TableColumn comboColumn = (TableColumn) r.get("comboColumn"); TableCellEditor editor = comboColumn.getCellEditor(); assertNotNull(editor); assertTrue(editor instanceof DefaultCellEditor); DefaultCellEditor dcEditor = (DefaultCellEditor) editor; Component c = dcEditor.getComponent(); assertEquals(combobox, c); } @Test public void testJCheckBoxCellEditor() { BuildResult r = new SwingYamlBuilder("JTable(name=table):") {{ ___("- TableColumn(name=column):"); _____("- JCheckBox(name=checkbox)"); }}.build(this); JCheckBox checkbox = (JCheckBox) r.get("checkbox"); TableColumn comboColumn = (TableColumn) r.get("column"); TableCellEditor editor = comboColumn.getCellEditor(); assertNotNull(editor); assertTrue(editor instanceof DefaultCellEditor); DefaultCellEditor dcEditor = (DefaultCellEditor) editor; Component c = dcEditor.getComponent(); assertEquals(checkbox, c); } @Test public void testJTextFieldEditor() { BuildResult r = new SwingYamlBuilder("JTable(name=table):") {{ ___("- TableColumn(name=column):"); _____("- JTextField(name=textfield)"); }}.build(this); JTextField textfield = (JTextField) r.get("textfield"); TableColumn comboColumn = (TableColumn) r.get("column"); TableCellEditor editor = comboColumn.getCellEditor(); assertNotNull(editor); assertTrue(editor instanceof DefaultCellEditor); DefaultCellEditor dcEditor = (DefaultCellEditor) editor; Component c = dcEditor.getComponent(); assertEquals(textfield, c); } @Test public void testCellEditor() { BuildResult r = new SwingYamlBuilder("JTable(name=table):") {{ ___("- TableColumn(name=column):"); _____("- TableTestCellEditor(name=cellEditor)"); }}.build(this); TableColumn comboColumn = (TableColumn) r.get("column"); TableCellEditor editor = comboColumn.getCellEditor(); assertNotNull(editor); assertTrue(editor instanceof TableTestCellEditor); TableTestCellEditor cellEditor = (TableTestCellEditor) r.get("cellEditor"); assertEquals(cellEditor,editor); } @Test public void testCellRenderer() { BuildResult r = new SwingYamlBuilder("JTable(name=table):") {{ ___("- TableColumn(name=column):"); _____("- TableTestCellRenderer(name=cellRenderer)"); }}.build(this); TableColumn comboColumn = (TableColumn) r.get("column"); TableCellRenderer renderer = comboColumn.getCellRenderer(); assertNotNull(renderer); assertTrue(renderer instanceof TableTestCellRenderer); TableTestCellRenderer cellRenderer = (TableTestCellRenderer) r.get("cellRenderer"); assertEquals(renderer,cellRenderer); } @Test public void testCellHeaderRenderer() { BuildResult r = new SwingYamlBuilder("JTable(name=table):") {{ ___("- TableColumn(name=column):"); _____("- TableTestCellRenderer(name=cellRenderer,forHeader=true)"); }}.build(this); TableColumn comboColumn = (TableColumn) r.get("column"); TableCellRenderer renderer = comboColumn.getHeaderRenderer(); assertNotNull(renderer); assertTrue(renderer instanceof TableTestCellRenderer); TableTestCellRenderer cellRenderer = (TableTestCellRenderer) r.get("cellRenderer"); assertEquals(renderer,cellRenderer); } public static class TableTestCellRenderer implements TableCellRenderer { public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { return new JButton("Test"); } } public static class TableTestCellEditor implements TableCellEditor { private String name; public void setName(String name) { this.name = name; } public String getName() { return this.name; } public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { // TODO Auto-generated method stub return null; } public void addCellEditorListener(CellEditorListener l) { // TODO Auto-generated method stub } public void cancelCellEditing() { // TODO Auto-generated method stub } public Object getCellEditorValue() { // TODO Auto-generated method stub return null; } public boolean isCellEditable(EventObject anEvent) { // TODO Auto-generated method stub return false; } public void removeCellEditorListener(CellEditorListener l) { // TODO Auto-generated method stub } public boolean shouldSelectCell(EventObject anEvent) { // TODO Auto-generated method stub return false; } public boolean stopCellEditing() { // TODO Auto-generated method stub return false; } } //used for testing public static class TestModel implements TableModel { public void addTableModelListener(TableModelListener l) { // TODO Auto-generated method stub } public Class<?> getColumnClass(int columnIndex) { return String.class; } public int getColumnCount() { return 1; } public String getColumnName(int columnIndex) { return "test"; } public int getRowCount() { return 0; } public Object getValueAt(int rowIndex, int columnIndex) { return null; } public boolean isCellEditable(int rowIndex, int columnIndex) { return false; } public void removeTableModelListener(TableModelListener l) { } public void setValueAt(Object value, int rowIndex, int columnIndex) { } } }